package user;

import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class test {
    public static void main(String[] args) {
        List<User> users = Arrays.asList(
                new User("张三", 16),
                new User("李四", 25),
                new User("王五", 30),
                new User("赵六", 65),
                new User("孙七", 18),
                new User("周八", 70)
        );

        // 使用 Stream 按年龄区间分组并统计人数
        Map<String, Long> result = users.stream().collect(Collectors.groupingBy(user ->  {
            if (user.getAge() < 18) {return "未成年";}
            if (user.getAge() < 60) {return "成年人";}
            return "老年人";
        }, Collectors.counting()))
                // 在这里写 stream 操作
                ;

        System.out.println(result);
        // 正确输出应为：
        // {未成年=1, 成年人=3, 老年人=2}
        // 分组 + 提取姓名 + 收集为 List
        Map<String, List<String>> result1 = users.stream()
                .collect(Collectors.groupingBy(
                        user -> {
                            int age = user.getAge();
                            if (age <= 17) return "未成年";
                            else if (age <= 59) return "成年人";
                            else return "老年人";
                        },
                        Collectors.mapping(
                                User::getName, // 提取姓名
                                Collectors.toList() // 收集为 List
                        )
                ));

        System.out.println(result1);
//        {
//            "未成年" -> ["张三"],
//            "成年人" -> ["李四", "王五", "孙七"],
//            "老年人" -> ["赵六", "周八"]
//        }
    }
}